////////////////////////////////////////////////
// DESCRIPTION:
//     C++ Run Time support for BootLoaders and OAL
//
// Legal Notices:
//    Copyright (C) 2005, EmbeddedFusion
//    ALL RIGHTS RESERVED
//
//    This file, software, or program is supplied under the terms of a
//    license agreement and/or nondisclosure agreement with EmbeddedFusion
//    and may not be copied or disclosed except in accordance with the
//    terms of that agreement.  This file, software, or program contains
//    copyrighted material and/or trade secret information of EmbeddedFusion,
//    and must be treated as such. EmbeddedFusion reserves all rights in this
//    material, except as the license agreement or nondisclosure agreement
//    specifically indicate.
//
//    All rights reserved.  No part of this program or publication may be
//    reproduced, transmitted, transcribed, stored in a retrieval system
//    retrieval system, or translated into any language or computer
//    language, in any form or by any means, electronic, mechanical,
//    magnetic, optical, chemical, manual, or otherwise, without the prior
//    written permission of EmbeddedFusion.
//
// Disclaimer:
//    EmbeddedFusion makes no warranty of any kind regarding this code.
//    This code is provided on an "As Is" basis and EmbeddedFusion will
//    not provide any support assistance, installation, training or other
//    services.
//    EmbeddedFusion does not provide any updates, enhancements or extensions.
//    EmbeddedFusion specifically disclaims any warranty of merchantability,
//    non-infringement, fitness for any particular purpose,
//    or any other warranty.
//
//    EmbeddedFusion disclaims all liability, including liability
//    for infringement of any proprietary rights, relating to use of the
//    code. No license, express or implied, by estoppel or otherwise,
//    to any intellectual property rights is granted herein.
//
//    EmbeddedFusion has no responsibility under warranty, indemnification
//    or otherwise, for the modification or customization of any EmbeddedFusion
//    software by EmbeddedFusion, customer, website user or any third party even
//    if such customization and/or modification is done using EmbeddedFusion tools,
//    training or methods documented by EmbeddedFusion.
//
#pragma once
#include <wtypes.h>

namespace FusionWare
{
    // C++ Runtime support for OALs
    // The kernel does not use or set up the C++ runtime
    // so an OAL that intends to use it needs to initialize 
    // the runtime a bit for use.
    // 
    namespace CRT
    {
        // Initialize static C++ objects by calling constructors
        // Safe to call multiple times. Only the first call will
        // perform the initialization.
        void StaticInit(DWORD HeapBase, DWORD HeapSize, bool ForceFullInit=true);

        extern const DWORD StackBase;
        extern const DWORD StackSize;
        extern const DWORD HeapBase;
        extern const DWORD HeapSize;
    }
}
